package 哈希表;

/**
 * @author: 大怪
 * @email: 962527441@qq.com
 */

/**
 * 题目：
 * 某种外星语也使用英文小写字母，但可能顺序 order 不同。字母表的顺序（order）是一些小写字母的排列。
 * 给定一组用外星语书写的单词 words，以及其字母表的顺序 order，只有当给定的单词在这种外星语中按字典序排列时，返回 true；否则，返回 false。
 *
 * 示例 1：
 *
 * 输入：words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
 * 输出：true
 * 解释：在该语言的字母表中，'h' 位于 'l' 之前，所以单词序列是按字典序排列的。
 *
 */
public class 外星语言是否排序 {
    class Solution {
        public boolean isAlienSorted(String[] words, String order) {
            for (int i = 1; i < words.length; i++) {
                String cur = words[i];
                String pre = words[i-1];
                int p1 = 0,p2 = 0,len1=cur.length(),len2 = pre.length();
                while(p1<len1 && p2<len2) {
                    int p = order.indexOf(cur.substring(p1,p1+1));
                    int q = order.indexOf(pre.substring(p2,p2+1));
                    if(p>q) {
                        break;
                    }
                    if (p<q) {
                        return false;
                    }
                    p1++;
                    p2++;
                }
                if (p2<len2 && p1 ==len1) {
                    return false;
                }
            }
            return true;
        }
    }
}
